Ethernet is a family of computer network standards that are widely used in wired local area networks (LANs). These standards have been codified by the IEEE 802.3 working group and define a wide range of link-layer protocol features and medium access control (MAC) functions. The Ethernet link-layer protocol may run over a variety of underlying physical-layer (PHY) types and protocols.
For full-duplex links, Annex 31B of the IEEE 802.3 specification defines an optional flow control operation using “PAUSE” frames. When the receiver on a given link transmits a PAUSE frame to the transmitter, it causes the transmitter to temporarily stop all transmission on the link (except certain control frames) for a period of time that is specified in the PAUSE frame. This pause mechanism enables the receiver to recover from states of congestion.
Recently, a number of new IEEE standards for data center bridging (DCB) have been proposed, offering enhanced Ethernet flow control capabilities. For example, the IEEE 802.1Qbb project authorization request (PAR) provides priority-based flow control (PFC) as an enhancement to the pause mechanism described above. PFC creates eight separate virtual links on a given physical link and allows the receiver to pause and restart the virtual links independently. PFC thus enables the operator to implement differentiated quality of service (QoS) policies for the eight virtual links.
A variety of protocols exist for error detection and control over a physical network link. For this purpose, an error-detecting code, such as a cyclic redundancy check (CRC) code, is generally added to each data block that is transmitted over the link. The receiver checks each incoming data block for errors and, upon detecting an error, sends an automatic repeat request (ARQ) to the transmitter, which then retransmits the required data block or blocks. In hybrid ARQ (HARQ) schemes, the transmitter adds a forward error correction (FEC) code, such as a Reed-Solomon code, to each data block. Upon detecting an error, the receiver first attempts to correct the error using the FEC code. The receiver sends an ARQ to the transmitter only when error correction is not possible. HARQ thus performs better than simple ARQ on noisy links, which experience frequent bit errors, but may still require retransmission of many data blocks as signal conditions deteriorate. ARQ and HARQ schemes are most often implemented in the link layer, but both PHY and higher-layer implementations are also known in the art.